Today, communication networks are widely used. Various types of communication networks exist, including without limitation the Internet and other wide-area networks (WANs), local-area networks (LANs), telephony networks, and wireless networks. Additionally, many different communication protocols exist today. Information is often communicated across communication networks from a source (or “sender”) to one or more destinations. Various types of communication are supported via communication networks, such as standard telephony calls, voice-over-IP (VoIP) calls, wireless telephony calls (e.g., via a cellular network), television programming (e.g., via cable and/or satellite networks), data file transfers, electronic mail, instant messaging, web pages, streaming media, video-conferencing, etc. Thus, various types of devices and applications are commonly deployed in and are expected to operate properly in a networked environment (e.g., in which communication to/from the devices/applications travels across a network). As such, it is often desirable to test/analyze the behavior of devices/applications in a networking environment. Thus, testing network equipment, providing network capacity planning, and in some cases troubleshooting distributed applications requires use of a networking environment. For example, such testing may observe how network equipment or distributed applications behave under certain network traffic conditions in which packets are delayed, lost, and/or sent out of order.
For testing purposes and even for network capacity planning, using a real network may not always be possible or desirable. Use of a specialized experimental network may often be prohibitively expensive, and therefore network simulators are often used instead, especially when the user would like to observe the effects of communication between networks, networking elements or even distributed applications across some network that provides a variable quality conduit for this communication. Thus, a network simulator may be employed for use in examining how packet delays, packet loss, packet reordering (and/or other conditions that may be encountered for communication across a network) affect the behavior of the communicating parties.
Various network simulators are known. Network simulators can be standalone devices that simulate a network's behavior, or they can be connected to real devices or networks. Testing of network equipment is often performed using simulated networks that have several sources of data traffic that create superficial network traffic loads. PC/system-based network simulators may be used for simulating slow-speed networks. At higher speeds (e.g., gigabit network speeds), processing data may require devices with specialized hardware-assistance for simulation. This means, however, that such systems generally become more complex and more expensive. Existing network simulators are therefore typically complex, expensive, and difficult to deploy. Additionally, their footprint is generally large.
Special-purpose network simulators have been developed that are targeted specifically for simulating a given type of communication on a network, such as simulating VoIP traffic. Many network simulators are operable to inject traffic into a system. That is, many traditional network simulators inject network traffic to a system under test. Such network simulators create artificial traffic that is injected for observing the effects of the artificial traffic on certain network elements, such as switches and/or routers. Accordingly, the traditional network simulators simulate traffic of a source by injecting artificial traffic into a network for stressing routers and/or switches, for example. In some cases, the network simulators are the source and destinations, and they create artificial traffic to be injected in a network from the source to the destination for observing the effects of such artificial traffic (e.g., on network equipment and/or applications executing at the source and/or destination). As an example, traditional network simulators may create synthetic loads on the network that will affect routers/switches and thus affect the traffic to be analyzed. For instance, a router tester may be used for checking for compliance and also to stress routers with artificial traffic. A service provider may use such a router tester to see if specific routers meet their demands for bandwidth, latency, etc. The router tester may send a specified number of packets per second to enable analysis of how a specific router will behave under the synthetic workload.